Current data replication techniques replicate data from a read-write master/primary data storage server to read-only slave/secondary data storage servers. (Data storage servers can be referred to herein as simply storage servers.) The primary storage server and the secondary storage servers can be located in different geographical regions. One of the drawbacks of such a replication technique can include a slow write operation if a client that is writing data to the primary storage server is located in a geographical region different from that of the primary storage server. Moreover, if the write operation is a synchronous write operation, the client can experience an additional delay, which is incurred in writing the data to the secondary storage servers. Typically, the client is unaware of why the write operations are slow, which can lead the clients to believe that the application writing the data is faulty or slow.
Another drawback of such a replication technique can include an overhead in maintenance of the replication infrastructure. For example, reconfiguring one of the secondary storage severs as a primary storage server and the current primary storage as a secondary storage server would typically require manual intervention by a user such as an administrator of the replication infrastructure. Further, such a reconfiguration can be burdensome as the user has to perform a number of steps to ensure data consistency, e.g., data from the current primary storage server has to be copied to the new primary storage server before the new primary storage server can be deployed again.
The risk of data loss is also significant with such replication techniques. Since there is only one primary storage server, if the primary storage server fails, the data writes may fail, which can be fatal to the application. In another scenario, if the primary storage server fails before the data is replicated to the read-only secondary storage servers, the data is lost. Further, the chances of data corruption is significant in such replication techniques, especially if a write operation fails at the secondary storage servers after the storage servers have agreed to a “consistency point,” which is a time when all data storage servers are guaranteed to have the same data.